package com.eascs.p2p.common.service;

import java.util.List;

import com.eascs.app.dao.PageResult;
import com.eascs.p2p.common.entity.AdminRoleEntity;
import com.eascs.p2p.common.entity.AdminUserEntity;
import com.eascs.p2p.common.entity.AdminUserRoleEntity;
import com.eascs.p2p.common.vo.AdminUserVO;
import com.eascs.p2p.common.vo.ModelResult;

public interface IAdminUserService {

	/**
	 * @Title: queryAdminUserByLogin
	 * @Description:  根据用户名，密码查询用户信息
	 * @author 张庆奇
	 * @param account
	 * @param password
	 * @return
	 * @return ModelResult<AdminUserEntity>
	 * @throws
	 * @date 2016年7月19日 下午1:45:44
	 */
	public ModelResult<AdminUserEntity> queryAdminUserByLogin(String account, String password);

	/**
	 * @Title: findPageAdminUserEntity
	 * @Description:分页查询用户信息
	 * @author 张庆奇
	 * @param vo
	 * @return
	 * @return ModelResult<PageResult<Object[]>>
	 * @throws @date
	 *             2016年7月19日 下午1:35:55
	 */
	public ModelResult<PageResult<Object[]>> findPageAdminUserEntity(AdminUserVO vo);

	/**
	 * @Title: queryAdminUserById
	 * @Description: 根据id查询该用户的信息
	 * @author 张庆奇
	 * @param id
	 * @return
	 * @return ModelResult<AdminUserEntity>
	 * @throws @date
	 *             2016年7月19日 下午1:32:01
	 */
	public ModelResult<AdminUserEntity> queryAdminUserById(String id);

	/**
	 * @Title: saveAdminUser
	 * @Description: 添加用户
	 * @author 张庆奇
	 * @param admin
	 * @return
	 * @return ModelResult<String>
	 * @throws @date
	 *             2016年7月19日 下午1:33:16
	 */
	public ModelResult<String> saveAdminUser(AdminUserEntity admin);

	/**
	 * @Title: updateAdminUser
	 * @Description: 修改用户
	 * @author 张庆奇
	 * @param admin
	 * @return
	 * @return ModelResult<Boolean>
	 * @throws @date
	 *             2016年7月19日 下午1:33:29
	 */
	public ModelResult<Boolean> updateAdminUser(AdminUserEntity admin);

	public ModelResult<List<AdminRoleEntity>> queryRoleList();
	
	public ModelResult<PageResult<Object[]>> queryRoleListByUser(AdminUserVO vo);
	
	public ModelResult<Boolean> isExistUserRole(String userId,String roleId);
	
	public ModelResult<String> saveUserRole(AdminUserRoleEntity adminUserRoleEntity);
	
	public ModelResult<Boolean> delUserRole(String userId,String roleId);

	/*public <T extends User> T getUserByAccount(String loginName, Class<T> type);*/
	public AdminUserEntity getUserByAccount(String loginName);
	
	public ModelResult<Boolean>  checkIsAdmin(String userId);
	
	public ModelResult<Boolean>  checkAuth(String userId, String roleCode);
	
	
}
